Random numbers


rand

C++ has the function rand() to generate pseudorandom values in the range from 0 to RAND_MAX. If the function is called from different programs or from different computers, the function always returns the same sequence of values. The function rand() is always used together with the function srand(). Usually, the function srand() is called at the beginning of the program. After that, the function rand() is called when it is required to generate a random number. The function srand() requires a value called seed that indicates the position of the sequence of values generated by rand(). Usually, srand() is called passing some value from the computer such the number of clock cycles of the processor.
C++ tiene la función rand() para generar números pseudo-aleatorios en el rango de 0 a RAND_MAX. Si la función es llamada desde diferentes programas o desde diferentes computadoras, la función siempre regresa la misma secuencia de valores. La función rand() es siempre usada junto con la función srand(). Usualmente, la función srand() es llamada al principio del programa. Después de esto, la función rand() es llamada cuando se requiere generar un número aleatorio. La función srand() requiere un valor llamado semilla que indica la posición de la secuencia de valores generada por rand(). Usualmente, srand() es llamada pasando algún valor de la computadora tal como el número de ciclos de reloj del procesador.

Problem 1
Create a program called Bet to generate an integer random value.
Cree un progama llamado Bet para generar un valor entero aleatorio.

Bet

Bet.h
#pragma once //______________________________________ Bet.h
#include "resource.h"

class Bet: public Win::Dialog
{
public:
     Bet()
     {
          srand(::GetTickCount());
     }
     ~Bet()
     {
     }
protected:
     ...
};

Bet.cpp
void Bet::Window_Open(Win::Event& e)
{
}

void Bet::btGenerate_Click(Win::Event& e)
{
     tbxNumber.IntValue = rand();
}


Tip
Observe that you can scale the values returned by rand() to generate random values in any range as it is shown in the program below.
Observe que usted puede escalar los valores regresados por rand() para generar valores aleatorios en cualquier rango como se muestra en el programa abajo.

Program.cpp
int a = rand(); // [0 RAND_MAX]
double b = 2.0*rand(); // [0 2*RAND_MAX]
double c = (2.0*rand())/RAND_MAX; // [0 2.0]
double d = (9.0*rand())/RAND_MAX + 1.0; // [1.0 10.0]


Problem 2
Create a program called RanGen to generate random values. You may divide rand() by RAND_MAX. Do not forget that the division of two integer values is an integer value.
Cree un progama llamado RanGen para generar valores aleatorios. Usted puede dividir rand() entre RAND_MAX. No se olvide que la división de dos números enteros es un valor entero.

RanGen1

RanGen2

RanGen.h
#pragma once //______________________________________ RanGen.h
#include "resource.h"

class RanGen: public Win::Dialog
{
public:
     RanGen()
     {
          srand(::GetTickCount());
     }
     ~RanGen()
     {
     }
protected:
     ...
};

RanGen.cpp
void RanGen::Window_Open(Win::Event& e)
{
     this->tbxMinimum.DoubleValue = 0.0;
     this->tbxMaximum.DoubleValue = 10.0;
     this->radioInteger.Checked = true;
     //________________________________________________________ spnCount
     spnCount.SetBuddy(tbxCount);
     spnCount.SetRange(1, 100);
     tbxCount.IntValue = 5;
}

void RanGen::btGenerate_Click(Win::Event& e)
{
}



© Copyright 2000-2021 Wintempla selo. All Rights Reserved. Jul 22 2021. Home